Amazon BedrockのClaude 3.5 Haiku 低価格で高性能な最新AIモデルを試してみた
2024年11月4日、Anthropicの最新モデル Claude 3.5 Haiku が Amazon Bedrock で サポートされました。
2024年10月の発表により、従来のClaude 3.5 Sonnet や 3.0 Opus に匹敵する性能で利用できるとされている、Claude 3.5 Haiku を、Amazon Bedrockで試す機会がありましたので、紹介させていただきます。
Introducing computer use, a new Claude 3.5 Sonnet, and Claude 3.5 Haiku
モデル有効化
オレゴンリージョンのBedrockで、 Claude 3.5 Haiku のモデルアクセスを有効化しました。
オンデマンド価格比較
Claude 3.5 Haikuのオンデマンド単価
- Claude 3 Haiku 4倍
- Claude 3.5 Sonnet の1/3
- Claude 3 Opus の1/15
の設定となっています。
US East、US West オンデマンド価格(USD)
Anthropic models | Price per 1,000 input tokens | Price per 1,000 output tokens |
---|---|---|
Claude 3 Haiku | 0.00025 | 0.00125 |
Claude 3.5 Haiku | 0.00100 | 0.00500 |
Claude 3.5 Sonnet** | 0.00300 | 0.015000 |
Claude 3 Sonnet | 0.00300 | 0.01500 |
Claude 3 Opus* | 0.01500 | 0.07500 |
試してみた
下記のプロンプトで、実行環境として Lambdaを利用するCodeBuild の設置用のCloudFormationテンプレートの作成を試みました
- Type: ARM_LAMBDA_CONTAINER
- ComputeType: BUILD_LAMBDA_1GB
- Image: aws/codebuild/amazonlinux-aarch64-lambda-standard:python3.12
の ARMのLambdaを実行環境とするCodeBuild 上で、
SDK BOTO3で STS.Client.get_caller_identity() を実行する処理をBuildSpecで定義。
実行結果は標準のログ出力にJSONで出力し、CloudWatch Logsで確認できるようにしたいです。
この処理を実現するために必要な、IAM、CloudWatchロググループを含む、CloudFormationテンプレートを生成してください。
Claude 3.5 Haiku
以下に、ご要望に対応するCloudFormationテンプレートを示します:
AWSTemplateFormatVersion: '2010-09-09'
Description: CodeBuild Project for STS Caller Identity Check with ARM Lambda Environment
Resources:
# CloudWatch Logsロググループ
CodeBuildLogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: /aws/codebuild/sts-identity-check
RetentionInDays: 30
# IAMロール
CodeBuildServiceRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: codebuild.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/CloudWatchLogsFullAccess
Policies:
- PolicyName: STSIdentityAccessPolicy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- sts:GetCallerIdentity
Resource: '*'
# CodeBuildプロジェクト
STSIdentityCheckProject:
Type: AWS::CodeBuild::Project
Properties:
Name: sts-identity-check
ServiceRole: !GetAtt CodeBuildServiceRole.Arn
LogsConfig:
CloudWatchLogs:
GroupName: !Ref CodeBuildLogGroup
Status: ENABLED
Artifacts:
Type: NO_ARTIFACTS
Environment:
Type: ARM_LAMBDA_CONTAINER
ComputeType: BUILD_LAMBDA_1GB
Image: aws/codebuild/amazonlinux-aarch64-lambda-standard:python3.12
ImagePullCredentialsType: CODEBUILD
Source:
Type: NO_SOURCE
BuildSpec: |
version: 0.2
phases:
install:
runtime-versions:
python: 3.12
build:
commands:
- |
python3 -c "
import boto3
import json
import sys
try:
# STSクライアントの作成
sts_client = boto3.client('sts')
# 呼び出し元のアイデンティティを取得
caller_identity = sts_client.get_caller_identity()
# 標準出力にJSONで出力
print(json.dumps({
'UserId': caller_identity['UserId'],
'Account': caller_identity['Account'],
'Arn': caller_identity['Arn']
}, indent=2))
except Exception as e:
print(f'Error retrieving caller identity: {str(e)}', file=sys.stderr)
sys.exit(1)
"
Outputs:
CodeBuildProjectName:
Description: Name of the CodeBuild Project
Value: !Ref STSIdentityCheckProject
CloudWatchLogGroupName:
Description: Name of the CloudWatch Logs Group
Value: !Ref CodeBuildLogGroup
このテンプレートの主な特徴:
-
ARM Lambda用のCodeBuild環境
- Type: ARM_LAMBDA_CONTAINER
- ComputeType: BUILD_LAMBDA_1GB
- Image: amazonlinux-aarch64-lambda-standard:python3.12
-
CloudWatch Logsの設定
- ロググループを作成
- ログ保持期間を30日に設定
- CodeBuildプロジェクトにログ設定を追加
-
IAMロール
- CloudWatchへのログ出力権限
- STSのget_caller_identity呼び出し権限
-
BuildSpec
- Python 3.12を使用
- 標準出力にJSONで結果を出力
- エラー発生時は標準エラー出力に出力し、終了コード1で終了
使用方法:
- このテンプレートをデプロイ
- CodeBuildプロジェクトを実行
- CloudWatch Logsの
/aws/codebuild/sts-identity-check
ロググループで実行結果を確認
出力される情報:
- UserId
- Account
- Arn
注意点:
- 必要に応じて、ログ保持期間などを調整してください
- 権限は最小権限の原則に従って適宜調整してください
実行すると、CloudWatch Logsに以下のような形式でログが出力されます:
{
"UserId": "AROAEXAMPLEID:session-name",
"Account": "123456789012",
"Arn": "arn:aws:sts::123456789012:assumed-role/role-name/session-name"
}
Claude 3 Haiku
はい、以下のようなCloudFormationテンプレートを生成することができます。このテンプレートでは、ARM_LAMBDA_CONTAINERのCodeBuildプロジェクトを作成し、BOTO3を使ってSTS.Client.get_caller_identity()の処理を実行し、その結果を標準ログ出力に出力するように設定しています。また、CloudWatchログにもログ出力されるよう設定しています。
AWSTemplateFormatVersion: '2010-09-09'
Description: CodeBuild project to execute BOTO3 STS get_caller_identity on ARM Lambda
Parameters:
CodeBuildProjectName:
Type: String
Default: my-codebuild-project
Resources:
CloudWatchLogsGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: /aws/codebuild/my-codebuild-project
RetentionInDays: 7
CodeBuildRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: codebuild.amazonaws.com
Action: 'sts:AssumeRole'
ManagedPolicyArns:
- arn:aws:iam::aws:policy/CloudWatchLogsFullAccess
- arn:aws:iam::aws:policy/AWSLambda_FullAccess
- arn:aws:iam::aws:policy/AmazonSQSFullAccess
- arn:aws:iam::aws:policy/AmazonS3FullAccess
CodeBuildProject:
Type: AWS::CodeBuild::Project
Properties:
Artifacts:
Type: NO_ARTIFACTS
Environment:
ComputeType: BUILD_LAMBDA_1GB
Image: aws/codebuild/amazonlinux-aarch64-lambda-standard:python3.12
Type: ARM_LAMBDA_CONTAINER
EnvironmentVariables:
- Name: AWS_DEFAULT_REGION
Value: !Ref AWS::Region
Name: !Ref CodeBuildProjectName
ServiceRole: !GetAtt CodeBuildRole.Arn
Source:
BuildSpec: |
version: 0.2
phases:
install:
runtime-versions:
python: 3.12
pre_build:
commands:
- pip install boto3
build:
commands:
- |
import boto3
import json
sts = boto3.client('sts')
result = sts.get_caller_identity()
print(json.dumps(result, indent=2))
post_build:
commands:
- echo "CodeBuild project finished"
Type: CODEPIPELINE
Logs:
CloudWatchLogs:
GroupName: !Ref CloudWatchLogsGroup
StreamName: !Ref CodeBuildProject
Outputs:
CodeBuildProjectName:
Description: The name of the CodeBuild project
Value: !Ref CodeBuildProject
このテンプレートを使用すると、以下のことができます:
CodeBuildProjectName
パラメーターを指定して、CodeBuildプロジェクトを作成します。- CodeBuildプロジェクトの実行時に、BOTO3のSTS.Client.get_caller_identity()の結果がJSON形式で標準ログ出力に出力されます。
- CloudWatchログを確認することで、その出力結果を確認できます。
このテンプレートは、CodeBuildプロジェクトの作成、IAMロールの設定、ビルドスペックの定義、CloudWatchロググループの作成などを行っています。ご利用の際は、必要に応じて適宜変更をお願いいたします。
差分
3.5 と 3.0 の出力したCloudFormationテンプレート
- CodeBuildServiceRole、3.5 Haikuは より最小権限なポリシーが設定されている。
- boto3の実行結果をパース、例外処理も実装されている
3.5の方がより実用性の高いテンプレートが生成されていました。
まとめ
Claude 3.5 Haiku は、先行して利用可能となっていた Claude 3.5 Sonnet (v2) と同様、コーディング性能が強化され、より実用的なコード生成に利用できる可能性があります。
前世代の Claude 3 Haiku と比較するとオンデマンド単価は上昇しましたが、Claude 3.5 Sonnet、Claude 3 Opusと比較すると依然として低価格です。
現時点のClaude 3.5 Haiku はは画像処理など一部の機能が制限されていますが、費用対効果に優れたモデルの一つとして、ぜひお試し下さい。